/* 
*注意：由于枚举的key值是用索引取值的，索引枚举的顺序不能改变，新增的枚举只能加在后面
*/


const COLUMN_TTYPE = { // 表单定义的列类型
    BASE_COLUMN: '基础表列',
    EXT_COLUMN: '扩展列'
}
const DATA_TYPE = { // 表单定义的数据类型
    varchar: 'varchar',
    int: 'int',
    datetime: 'datetime',
    text: 'text',
}

const TAB_TYPE = { // 表单定义的表类型
    BASE_TABLE: '原始表',
    VIEW: '视图'
}

const TAB_DEF = { // 表单定义的表定义
    PRIMARY: '主表',
    DETAILED: '明细表'
}

const VALUE_TYPE = { // 表单定义的值类型
    DEFAULT: '默认值',
    SQL: 'SQL查询值',
    SQL_LIST: 'SQL查询列表',
    DICTIONARIES: '字典',
    JAVASCRIPT_MATH: 'js公式',
    JAVA_MATH: 'java公式',
    SQL_MAP_LIST: 'SQLMAP列表'
}

const LAYOUT_TYPE = { // 表单布局类型
    TABLE: '表格布局',
    FORM: '表单布局'
}

const BPMN_USER_TYPE = { // 流程的节点操作人类型
    DESIGNATION: '指定人员',
    SUPERIOR: '上级管理岗',
    DEPARTMENT: '部门管理岗',
    MANAGER: '部门管理人',
    SQL: 'SQL语句',
    ROLE: '指定角色',
}

const BPMN_RELAY_TYPE = { // 流程节点的转发类型
    AUTO: '自动',
    MANUAL: '人工'
}

const COUNTER_SIGN_TYPE = { // 流程节点的会签类型
    RATIO: '通过比例',
    ONE_VOTE: '一票权'
}

const VALUE_TYPE_DATA = [ // 常用值类型
    { 
        valueType: Object.keys(VALUE_TYPE)[4],
        valueData: '',
        id: 'LOGIN_USER_ID', // 不能重复
        text: '登录用户UserId'
    },
    { 
        valueType: Object.keys(VALUE_TYPE)[4],
        valueData: '', 
        id: 'LOGIN_DEPT_ID', 
        text: '登录用户DeptId'
    },
    { 
        valueType: Object.keys(VALUE_TYPE)[4],
        valueData: '', 
        id: 'LOGIN_POSITION_ID', 
        text: '登录用户PositionId'
    },
    {
        valueType: Object.keys(VALUE_TYPE)[4],
        valueData: `
        (() => {
            const date1 = this.formData['date1']; /*将中括号中的date1替换成开始时间字段*/
            const date2 = this.formData['date2']; /*将中括号中的date2替换成结束时间字段*/
            if (date1 && date2) {
              const  uniTimes = 1000 * 60 * 60 * 24; /* 一天的毫秒数 */
              const diffTimes = new Date(date2).valueOf() - new Date(date1).valueOf(); /* 时间差的毫秒数 */
              return parseInt(diffTimes/uniTimes);
            }
            return 0;
          })()
        `,
        id: 'DIFF_TIMES', 
        text: '计算时间差'
    },
    {
        valueType: Object.keys(VALUE_TYPE)[4],
        valueData: `
        (() => {
            return new Date();
          })()
        `,
        id: 'SYS_DATETIME', 
        text: '当前时间'
    },
    {
        valueType: Object.keys(VALUE_TYPE)[4],
        valueData: '', 
        id: 'LOGIN_DEPTID-POSITIONID', 
        text: '登录用户DeptId-PositionId'
    },
    {
        valueType: Object.keys(VALUE_TYPE)[4],
        valueData: '', 
        id: 'LOGIN_DEPTID-USERID', 
        text: '登录用户DeptId-UserId'
    }
]

const TAB_COLUMN_TTYPE = { // 自定义表单表格组件的列类型
    '': '普通列',
    index: '行的索引',
    component: '组件列'
}
const PROCESS_STATUS = { // 流程监控-流程状态
    FINISH: '完成',
    PROCESSING: '进行中',
    CLOSE: '关闭'
}

const LIST_TYPE = { // 流程回溯-步骤的类型
    FLOW_LIST: '流程列表',
    DATA_LIST: '数据列表'
}

export default {
    COLUMN_TTYPE,
    DATA_TYPE,
    TAB_TYPE,
    TAB_DEF,
    VALUE_TYPE,
    LAYOUT_TYPE,
    BPMN_USER_TYPE,
    BPMN_RELAY_TYPE,
    COUNTER_SIGN_TYPE,
    VALUE_TYPE_DATA,
    TAB_COLUMN_TTYPE,
    PROCESS_STATUS,
    LIST_TYPE
}
